package com.hw01.config;

import com.hw01.filter.AuthFilter;
import com.hw01.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;

/**
 * @ClassName MvcConfig
 * @Description TODO
 * @Author Kx
 * @Date 2025/5/13 19:22
 * @Version 1.0
 */
// 标识为配置类
@Configuration
// 启用MVC注解
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {

    /**
     * @author: kx
     * @date: 2025/5/14 19:55
     * @param configurer : 跨域注册
     * @description: 静态资源处理
    */
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        // 启用默认servlet
        configurer.enable();
    }

    /**
     * @author: kx
     * @date: 2025/5/13 19:24
     * @param registry : 跨域注册
     * @description: 设置全局跨域配置
    */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("http://127.0.0.1:5500") // 请求地址
                .allowedMethods("*") // 允许所有方法跨域
                .allowedHeaders("*");
    }

    /**
     * @author: kx
     * @date: 2025/5/14 19:56
     * @param registry :  拦截器注册
     * @description: 装配拦截器
    */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor())
                // 拦截所有请求
                .addPathPatterns("/**")
                // 直接放行的请求
                .excludePathPatterns("/login.html", "/login", "/page/js/**", "/page/css/**");
        // 可以配置多个拦截器
//        registry.addInterceptor(new AuthFilter());
    }
}
